package com.oig.sys.feign.handler;


import feign.FeignException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Slf4j
@RestControllerAdvice
@Order(value = -1)
public class FeignExceptionHandler {

    /**
     * 当没有配置服务降级时，异常会直接抛出，调用的地方没有try catch 时，一路往上抛，统一处理一下
     *
     * 如果是被掉用服务本身抛出异常时，已经用SysResponse包装了，feign这里没必要再包装一次
     *
     * 如果是其他异常，如何处理？
     */
    @ExceptionHandler(FeignException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public String serviceExceptionHandler(FeignException e) {
        log.error("advice FeignException:", e);
        return e.contentUTF8();
    }

}
